package ai.hou.camera.util;

import android.content.Intent;

import androidx.camera.core.CameraSelector;

import ai.hou.camera.view.MagicMaskView;

/**
 * @author zhaoxiaolei
 * @date 2021/3/12 11:31
 */
public class CameraConfig {

    public static Intent newIntent() {
        return new Intent(INTENT_CAMERA);
    }

    /**
     * 跳转相机的intent的action
     */
    public static final String INTENT_CAMERA = "ai.hou.zi.xi.action.CAMERA";
    /**
     * 是否需要切换闪光灯模式按钮，默认开启true。（boolean类型）
     */
    public static final String EXTRA_HAS_FLASH_MODE = "needFlashMode";
    /**
     * 闪光灯模式
     * {@link CameraConfig#FLASH_MODE_AUTO}
     * {@link CameraConfig#FLASH_MODE_OFF}
     * {@link CameraConfig#FLASH_MODE_ON}
     */
    public static final String EXTRA_FLASH_MODE = "flashMode";
    /**
     * 是否需要开关灯按钮，默认开启true。（boolean类型）
     */
    public static final String EXTRA_TORCH = "needTorch";
    /**
     * 是否需要切换前后摄像头按钮，默认开启true。（boolean类型）
     */
    public static final String EXTRA_TURNOVER = "needTurnover";
    /**
     * 默认使用哪个摄像头（int类型）
     * 0: 后置摄像头，1：前置摄像头
     */
    public static final String EXTRA_FRONT_BACK_CAMERA = "frontOrBackCamera";
    /**
     * 是否需要切换相机尺寸比例，默认开启true。（boolean类型）
     */
    public static final String EXTRA_ASPECT_RATIO = "needAspectRatio";
    /**
     * 是否需要缩放按钮，默认开启true。（boolean类型）
     */
    public static final String EXTRA_SUPPORT_ZOOM = "needZoom";
    /**
     * 是否需要跳转相册按钮，默认开启true。（boolean类型）
     */
    public static final String EXTRA_HAS_ALBUM = "needAlbum";
    /**
     * 是否需要MaskView，默认false。（boolean类型）
     */
    public static final String EXTRA_HAS_MASK_VIEW = "needMaskView";
    /**
     * MaskView的type （int类型）
     * {@link MagicMaskView#MASK_NONE}, 啥都没有
     * {@link MagicMaskView#MASK_CUSTOM}, 自定义，需要传入drawable和尺寸
     * {@link MagicMaskView#MASK_ID_CARD_FRONT}, 身份证国徽面
     * {@link MagicMaskView#MASK_ID_CARD_BACK}， 身份证人像面
     * {@link MagicMaskView#MASK_STANDARD_CARD}  标准卡片，只有个卡片框，多用于银行卡等
     */
    public static final String EXTRA_MASK_TYPE = "maskType";
    /**
     * 是否需要CropView,默认false。（boolean类型）
     */
    public static final String EXTRA_HAS_CROP_VIEW = "needCropView";
    /**
     * 直接保存，不需再确认,默认false。（boolean类型）
     */
    public static final String EXTRA_SAVE_DIRECTLY = "saveDirectly";
    /**
     * 保存文件路径
     */
    public static final String EXTRA_PICTURE_PATH = "picturePath";
    /**
     * 是否支持二维码识别（直接扫码，暂时不支持相册选择识别）,默认false。（boolean类型）
     */
    public static final String EXTRA_SUPPORT_SCAN_QR_CODE = "supportScanQrCode";
    /**
     * 是否是个白内障,默认false。（boolean类型）
     */
    public static final String EXTRA_HAS_CATARACT = "hasCataract";
    /**
     * 白内障其他颜色（color类型）
     */
    public static final String EXTRA_CATARACT_COLOR = "cataractColor";
    /**
     * 是否可拖动裁剪框,默认true。（boolean类型）
     */
    public static final String EXTRA_DRAG_CROP_ENABLE = "dragCropEnable";
    /**
     * 是否扫码成功立即返回
     */
    public static final String EXTRA_QR_CODE_BACK = "qrCodeBack";


    /**
     * 二维码识别获取
     */
    public static final String DATA_SCAN_QR_CODE_RESULT = "scan_qr_code_result";
    /**
     * 图片文件地址获取
     */
    public static final String DATA_TAKE_PICTURE_PATH = "camera_take_picture_path";
    /**
     * 图片类型获取
     */
    public static final String DATA_TAKE_TYPE = "camera_take_type";
    /**
     * 图片类型-拍照获取
     */
    public static final String DATA_TAKE_CAMERA = "take_camera";
    /**
     * 图片类型-相机获取
     */
    public static final String DATA_TAKE_ALBUM = "take_album";
    /**
     * 获取类型-二维码
     */
    public static final String DATA_TAKE_QR_CODE = "take_qr_code";


    //以下是常量
    /**
     * 4:3相机
     */
    public static final int ASPECT_RATIO_4_3 = 43;
    /**
     * 16:9相机
     */
    public static final int ASPECT_RATIO_16_9 = 169;
    /**
     * 1:1相机
     */
    public static final int ASPECT_RATIO_1_1 = 11;
    /**
     * 闪光-自动
     */
    public static final int FLASH_MODE_AUTO = 0;
    /**
     * 闪光-开启
     */
    public static final int FLASH_MODE_ON = 1;
    /**
     * 闪光-关闭
     */
    public static final int FLASH_MODE_OFF = 2;
    /**
     * 相册
     */
    public static final int REQUEST_CODE_ALBUM = 1000;
    /**
     * 前置摄像头
     */
    public static final int LENS_FACING_FRONT = CameraSelector.LENS_FACING_FRONT;
    /**
     * 后置摄像头
     */
    public static final int LENS_FACING_BACK = CameraSelector.LENS_FACING_BACK;
    /**
     * 遮罩类型-啥都没有
     */
    public static final int MASK_NONE = MagicMaskView.MASK_NONE;
    /**
     * 遮罩类型-自定义，需要传入drawable和尺寸
     */
    public static final int MASK_CUSTOM = MagicMaskView.MASK_CUSTOM;
    /**
     * 遮罩类型-身份证国徽面
     */
    public static final int MASK_ID_CARD_FRONT = MagicMaskView.MASK_ID_CARD_FRONT;
    /**
     * 遮罩类型-身份证人像面
     */
    public static final int MASK_ID_CARD_BACK = MagicMaskView.MASK_ID_CARD_BACK;
    /**
     * 遮罩类型-标准卡片，只有个卡片框，多用于银行卡等
     */
    public static final int MASK_STANDARD_CARD = MagicMaskView.MASK_STANDARD_CARD;


    /**
     * 获取来源类型
     *
     * @param data {@link Intent}
     * @return {@link #DATA_TAKE_CAMERA,#DATA_TAKE_ALBUM,#DATA_TAKE_QR_CODE}
     */
    public static String getDataTakeType(Intent data) {
        return data.getStringExtra(CameraConfig.DATA_TAKE_TYPE);
    }

    public static String getDataTakeString(Intent data, String type) {
        if (DATA_TAKE_CAMERA.equals(type) || DATA_TAKE_ALBUM.equals(type)) {
            return data.getStringExtra(DATA_TAKE_PICTURE_PATH);
        } else if (DATA_TAKE_QR_CODE.equals(type)) {
            return data.getStringExtra(DATA_SCAN_QR_CODE_RESULT);
        }
        return null;
    }
}
